package info.motteke.mixivoice4j;

/**
 * データ作成用ビルダを作成するクラスです。
 *
 * @author Y.Wakamatsu
 */
public class DataBuilderFactory {

    /** キャッシュです。 */
    private final MixiVoiceCache cache;

    private MixiVoiceObserver observer;

    /**
     * コンストラクタです。
     *
     * @param cache
     *            データ永続化用のキャッシュ
     */
    /* package */DataBuilderFactory(MixiVoiceCache cache) {
        this.cache = cache;
    }

    /**
     * エントリを作成します。
     */
    public EntryBuilder newEntry() {
        EntryBuilder eb = new EntryBuilder(cache, observer);
        return eb;
    }

    /**
     * あるエントリへのコメントを作成します。
     *
     * @param parent
     *            コメントを付加するエントリ
     */
    public CommentBuilder commentTo(Entry parent) {
        return new CommentBuilder(cache, observer).parent(parent);
    }

    /**
     * ユーザ作成用のインスタンスを取得します。
     *
     * @return ユーザ作成用のインスタンス
     */
    public UserBuilder getUserBuilder() {
        return new UserBuilder();
    }

    /* package */void setObserver(MixiVoiceObserver observer) {
        this.observer = observer;
    }
}
